home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / 3DTOSHI2.ZIP / mpgfx / source / lgfxvgam.cpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-04-12  |  1.3 KB  |  76 lines

  1.  
  2. // lgfxvgam.cpp
  3. //
  4. // Copyright (c) 1995 by Toshiaki Tsuji, all rights reserved.
  5.  
  6. #include "stdgfx.h"
  7. #include "lgfxvga.h"
  8.  
  9. LONG  vgaSrcWd;
  10. LONG  vgaSrcHt;
  11.  
  12. // VOID SetVGASelector ( SHORT Selector )
  13. // EAX = Selector
  14.  
  15. VOID SetVGASelector ( SHORT Selector )
  16. {
  17.   if (Selector)
  18.     {}
  19. } // End of SetVGASelector
  20.  
  21. // VOID VGACopy256To256 ( BYTE *Src, LONG AddSrc, LONG vgaSrcWd, LONg vgaSrcHt,
  22. //                        LONG DestCx, LONG DestCy )
  23. //
  24. // EAX = Src, EDX = AddSrc, EBX = vgaSrcWd, ECX = vgaSrcHt
  25.  
  26. VOID VGACopy256To256 ( BYTE *Src, LONG AddSrc, LONG SrcWidth, LONG SrcHeight,
  27.                        LONG DestCx, LONG DestCy )
  28. {
  29. __asm {
  30.   pushad
  31.  
  32.   mov  EAX, Src
  33.   mov  EDX, AddSrc
  34.   mov  EBX, SrcWidth
  35.   mov  ECX, SrcHeight 
  36.  
  37.   mov  ESI, EAX   // ESI = Src
  38.   mov  vgaSrcWd, EBX
  39.   mov  vgaSrcHt, ECX
  40.  
  41.   sub  EDX, EBX
  42.   mov  EBX, EDX   // EBX = AddSrc - vgaSrcWd
  43.  
  44.   mov  EDI, 0A0000h
  45.   mov  EAX, DestCy
  46.   mov  EDX, 320
  47.  
  48.   mul  EDX  
  49.  
  50.   add  EAX, DestCx
  51.   add  EDI, EAX
  52.  
  53.   mov  EDX, 320
  54.   sub  EDX, vgaSrcWd
  55.   cld
  56.  
  57.   Copy256OutLoop :
  58.     mov ECX, vgaSrcWd
  59.     mov EAX, ECX
  60.     and EAX, 03h
  61.     shr ECX, 2
  62.     rep movsd
  63.     mov ECX, EAX
  64.     rep movsb
  65.     add ESI, EBX
  66.     add EDI, EDX
  67.     dec vgaSrcHt
  68.     jnz Copy256OutLoop
  69.  
  70.   popad
  71. } // End asm
  72. } // End of VGACopy256To256
  73.  
  74.  
  75.  
  76.